package com.agritech.observer;

import com.agritech.environment.EnvironmentData;
import com.agritech.machine.Tractor;

/**
 * 拖拉机观察者类，用于响应环境变化。
 */
public class TractorObserver implements EnvironmentObserver {
    private Tractor tractor;

    /**
     * 构造函数。
     * @param tractor 要观察的拖拉机对象。
     */
    public TractorObserver(Tractor tractor) {
        this.tractor = tractor;
    }

    /**
     * 更新拖拉机状态以响应环境变化。
     * @param data 最新的环境数据。
     */
    @Override
    public void update(EnvironmentData data) {
        System.out.println("拖拉机观察者 (" + tractor.getId() + ") 收到环境更新: " + data.toString());

        // 根据环境数据调整拖拉机行为
        if (data.getTemperature() < 5) {
            System.out.println("警告: 温度过低 (" + data.getTemperature() + "°C)，拖拉机 " + tractor.getId() + " 可能需要预热或停止作业。");
            // 实际应用中可能触发拖拉机状态变更或发送通知
        }

        if (data.getSoilMoisture() > 80) {
            System.out.println("警告: 土壤湿度过高 (" + data.getSoilMoisture() + "%)，拖拉机 " + tractor.getId() + " 作业效率可能降低，或应暂停作业。");
        }

        // 可以在这里添加更多基于环境数据的拖拉机特定逻辑
        // 例如，根据风速调整作业计划等
    }

    /**
     * 获取观察者名称。
     * @return 观察者名称。
     */
    @Override
    public String getObserverName() {
        return "拖拉机观察者 (" + tractor.getId() + ")";
    }
}